#pragma once

namespace StillDesign
{
	namespace PhysX
	{
		public enum class PhysicsParameter
		{
			SkinWidth = NX_SKIN_WIDTH,
			DefaultSleepLinearVelocitySquared = NX_DEFAULT_SLEEP_LIN_VEL_SQUARED,
			DefaultSleepAngularVelocitySquared = NX_DEFAULT_SLEEP_ANG_VEL_SQUARED,
			BounceThreshold = NX_BOUNCE_THRESHOLD,
			DynamicFrictionScaling = NX_DYN_FRICT_SCALING,
			StaticFrictionScaling = NX_STA_FRICT_SCALING,
			MaximumAngularVelocity = NX_MAX_ANGULAR_VELOCITY,
			ContinuousCollisionDetection = NX_CONTINUOUS_CD,
			
			VisualizationScale =  NX_VISUALIZATION_SCALE,
			VisualizeWorldAxes = NX_VISUALIZE_WORLD_AXES,
			VisualizeBodyAxes = NX_VISUALIZE_BODY_AXES,
			VisualizeBodyMassAxes = NX_VISUALIZE_BODY_MASS_AXES,
			VisualizeBodyLinearVelocity = NX_VISUALIZE_BODY_LIN_VELOCITY,
			VisualizeBodyAngularVelocity = NX_VISUALIZE_BODY_ANG_VELOCITY,
			VisualizeBodyJointGroups = NX_VISUALIZE_BODY_JOINT_GROUPS,
			VisualizeJointLocalAxes = NX_VISUALIZE_JOINT_LOCAL_AXES,
			VisualizeJointWorldAxes = NX_VISUALIZE_JOINT_WORLD_AXES,
			VisualizeJointLimits = NX_VISUALIZE_JOINT_LIMITS,
			VisualizeContactPoint = NX_VISUALIZE_CONTACT_POINT,
			VisualizeContactNormal = NX_VISUALIZE_CONTACT_NORMAL,
			VisualizeContactError = NX_VISUALIZE_CONTACT_ERROR,
			VisualizeContactForce = NX_VISUALIZE_CONTACT_FORCE,
			VisualizeActorAxes = NX_VISUALIZE_ACTOR_AXES,
			VisualizeCollisionAxisAlignedBoundingBoxes = NX_VISUALIZE_COLLISION_AABBS,
			VisualizeCollisionShapes = NX_VISUALIZE_COLLISION_SHAPES,
			VisualizeCollisionAxes = NX_VISUALIZE_COLLISION_AXES,
			VisualizeCollisionCompounds = NX_VISUALIZE_COLLISION_COMPOUNDS,
			VisualizeCollisionVertexNormals = NX_VISUALIZE_COLLISION_VNORMALS,
			VisualizeCollisionFaceNormals = NX_VISUALIZE_COLLISION_FNORMALS,
			VisualizeCollisionEdgeNormals = NX_VISUALIZE_COLLISION_EDGES,
			VisualizeCollisionSpheres = NX_VISUALIZE_COLLISION_SPHERES,
			//VisualizeCollisionSAPStructures = NX_VISUALIZE_COLLISION_SAP,
			VisualizeCollisionStaticPruningStructures = NX_VISUALIZE_COLLISION_STATIC,
			VisualizeCollisionDynamicPruningStructures = NX_VISUALIZE_COLLISION_DYNAMIC,
			VisualizeCollisionFreePruningStructures = NX_VISUALIZE_COLLISION_FREE,
			VisualizeContinuousCollisionDetectionTests = NX_VISUALIZE_COLLISION_CCD,
			VisualizeCollisionSkeletons = NX_VISUALIZE_COLLISION_SKELETONS,
			VisualizeFluidEmitters = NX_VISUALIZE_FLUID_EMITTERS,
			VisualizeFluidPosition = NX_VISUALIZE_FLUID_POSITION,
			VisualizeFluidVelocity = NX_VISUALIZE_FLUID_VELOCITY,
			VisualizeFluidKernelRadius = NX_VISUALIZE_FLUID_KERNEL_RADIUS,
			VisualizeFluidBounds = NX_VISUALIZE_FLUID_BOUNDS,
			VisualizeFluidPackets = NX_VISUALIZE_FLUID_PACKETS,
			VisualizeFluidMotionLimit = NX_VISUALIZE_FLUID_MOTION_LIMIT,
			VisualizeFluidDynamicCollision = NX_VISUALIZE_FLUID_DYN_COLLISION,
			VisualizeFluidStaticCollision = NX_VISUALIZE_FLUID_STC_COLLISION,
			VisualizeFluidMeshPackets = NX_VISUALIZE_FLUID_MESH_PACKETS,
			VisualizeFluidDrains = NX_VISUALIZE_FLUID_DRAINS,
			VisualizeFluidPacketData = NX_VISUALIZE_FLUID_PACKET_DATA,
			VisualizeClothMesh = NX_VISUALIZE_CLOTH_MESH,
			VisualizeClothCollision = NX_VISUALIZE_CLOTH_COLLISIONS,
			VisualizeClothSelfCollision = NX_VISUALIZE_CLOTH_SELFCOLLISIONS,
			VisualizeClothWorkPackets = NX_VISUALIZE_CLOTH_WORKPACKETS,
			VisualizeClothSleep = NX_VISUALIZE_CLOTH_SLEEP,
			VisualizeClothSleepVertex = NX_VISUALIZE_CLOTH_SLEEP_VERTEX,
			VisualizeClothTearableVertices = NX_VISUALIZE_CLOTH_TEARABLE_VERTICES,
			VisualizeClothTearing = NX_VISUALIZE_CLOTH_TEARING,
			VisualizeClothAttachment = NX_VISUALIZE_CLOTH_ATTACHMENT,
			VisualizeClothValidBounds = NX_VISUALIZE_CLOTH_VALIDBOUNDS,
			VisualizeSoftBodyMesh = NX_VISUALIZE_SOFTBODY_MESH,
			VisualizeSoftBodyCollisions = NX_VISUALIZE_SOFTBODY_COLLISIONS,
			VisualizeSoftBodyWorkPackets = NX_VISUALIZE_SOFTBODY_WORKPACKETS,
			VisualizeSoftBodySleep = NX_VISUALIZE_SOFTBODY_SLEEP,
			VisualizeSoftBodySleepVertex = NX_VISUALIZE_SOFTBODY_SLEEP_VERTEX,
			VisualizeSoftBodyTearableVertices = NX_VISUALIZE_SOFTBODY_TEARABLE_VERTICES,
			VisualizeSoftBodyTearing = NX_VISUALIZE_SOFTBODY_TEARING,
			VisualizeSoftBodyAttachment = NX_VISUALIZE_SOFTBODY_ATTACHMENT,
			VisualizeSoftBodyValidBounds = NX_VISUALIZE_SOFTBODY_VALIDBOUNDS,
			VisualizeActiveVertices = NX_VISUALIZE_ACTIVE_VERTICES,
			VisualizeForceFields = NX_VISUALIZE_FORCE_FIELDS,
			
			CollisionVetoJointed = NX_COLL_VETO_JOINTED,
			TriggerTriggerCallback = NX_TRIGGER_TRIGGER_CALLBACK,
			ContinuousCollisionDetectionEpsilon = NX_CCD_EPSILON,
			SolverConvergenceThreshold = NX_SOLVER_CONVERGENCE_THRESHOLD,
			BoundingBoxNoiseLevel = NX_BBOX_NOISE_LEVEL,
			ImplicitSweepCacheSize = NX_IMPLICIT_SWEEP_CACHE_SIZE,
			DefaultSleepEnergy = NX_DEFAULT_SLEEP_ENERGY,
			ConstantFluidMaximumPackets = NX_CONSTANT_FLUID_MAX_PACKETS,
			ConstantFluidMaximumParticlesPerStep = NX_CONSTANT_FLUID_MAX_PARTICLES_PER_STEP,
			AsynchronousMeshCreation = NX_ASYNCHRONOUS_MESH_CREATION,
			ForceFieldCustomKernelEpsilon = NX_FORCE_FIELD_CUSTOM_KERNEL_EPSILON,
			ImprovedSpringSolver = NX_IMPROVED_SPRING_SOLVER
		};
	};
};